package com.dog.basics.service.common;

import com.dog.basics.bean.vo.api.mtkj.ApiOrderPrepayVo;
import com.dog.basics.common.util.R;
import com.github.binarywang.wxpay.bean.entpay.EntPayRequest;
import com.github.binarywang.wxpay.bean.entpay.EntPayResult;
import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
import com.github.binarywang.wxpay.bean.request.WxPayRefundRequest;
import com.github.binarywang.wxpay.bean.result.WxPayRefundResult;
import com.github.binarywang.wxpay.exception.WxPayException;

import java.net.SocketException;

/**
 * @program: clumsy_security
 * @description: 微信业务
 * @author: Guo
 * @create: 2019-05-09 15:52
 **/
public interface WeChatMiniService {

    /**
     * 微信调用预支付
     *
     * @param orderPrepayVo
     * @return
     */
    R callOrderPrepayment(ApiOrderPrepayVo orderPrepayVo);

    /**
     * 解析回调数据
     *
     * @param xmlData
     * @return
     * @throws WxPayException
     */
    WxPayOrderNotifyResult parseOrderNotifyResult(String xmlData) throws WxPayException;

    /**
     * 重新支付
     *
     * @param orderId
     */
    R rePayOrder(Long orderId) throws SocketException;

    /**
     * 重新支付多商城
     *
     * @param orderId
     */
    R reShoppPayOrder(Long orderId) ;
    /**
     * 申请退款
     *
     * @param request
     * @return guonh 2019年10月14日
     */
    WxPayRefundResult refund(WxPayRefundRequest request) throws WxPayException;

    /**
     * 企业付款到零钱
     *
     * @param request
     * @return guonh 2019年10月21日
     */

    EntPayResult wxEntPay(EntPayRequest request);

    /**
     * 推送订阅消息
     * @return
     */
    Boolean pushMsg(String openId,String keyword1,String keyword2);
}
